Algorithmic Puzzles